<?php

/**
 * sfGuardUserProfile form.
 *
 * @package    ti
 * @subpackage form
 * @author     Evgeny Babin <psylosss@gmail.com>
 * @version    SVN: $Id: sfDoctrineFormTemplate.php 23810 2009-11-12 11:07:44Z Kris.Wallsmith $
 */
class sfGuardUserProfileForm extends BasesfGuardUserProfileForm
{
  public function configure()
  {
    parent::configure();
    
    unset($this['created_at'],$this['updated_at'],$this['validate']);
    unset($this['visible_tickets_list'],$this['visible_messages_list'],$this['current_project_id']);
    
    $this->widgetSchema['last_request_time']=new sfWidgetFormReadonly(array(
      'value'=>$this->getObject()->getDateTimeObject('last_request_time')->format('d.m.Y, H:i:s'),
    ));

    $this->widgetSchema['user_id'] = new sfWidgetFormInputHidden();
    
    
    $this->widgetSchema['email'] = new sfWidgetFormInput();
    
    
    $this->setValidator('email', new sfValidatorAnd(array(
      new sfValidatorEmail(array('required' => true, 'trim' => true)),
      new sfValidatorString(array('required' => true, 'max_length' => 80)),
    )));    
    
    $this->validatorSchema->setPostValidator(
      new sfValidatorDoctrineUnique(array(
        'model' => 'sfGuardUserProfile', 
        'column' => array('email'),
      ),array(
        'invalid'=>'Пользователь с таким email уже существует.',
      ))
    );
    

    $this->widgetSchema['foto'] = new sfWidgetFormInputFileEditable(array(
      'edit_mode'=>$this->getObject()->foto ? true:false,
      'file_src'=>$this->getObject()->getPreviewFotoWebpath(),
      'is_image'=>true,
      'delete_label'=>'Удалить аватар',
    ));
    $this->validatorSchema['foto'] = new sfValidatorFileImage(array(
        'path' => $this->getObject()->getFotoDir(),
        'required' => false,
        'min_size'=>300,
        'size'=>700,
        'mime_types'=>array('image/jpeg','image/pjpeg','image/png','image/gif'),
    ),array(
      'mime_types'=>'Недопустимый тип файла',
    ));
    $this->validatorSchema['foto_delete']=new sfValidatorBoolean();
    
    
    $this->widgetSchema['allow_interact_users_list']=new sfWidgetFormDoctrineChoice(array(
      'query'=>$this->getObject()->getAvailableInteractUsersQuery(),
      'model'=>'sfGuardUserProfile',
      'multiple'=>true,
    ));
    
    
    //TODO: проверяем, что пользователь не может контактировать с пользователями из других проектов
    //если у него нет пермиссии manage_tickets_in_all_projects
    
    //$this->validatorSchema->setPostValidator(
      //new sfValidatorShemaContains('current_user_id','visible_to_users_list',array(
      //  'invalid'=>'Нельзя контактировать с пользователями из других проектов',
      //)
    //));
    
    
  }
}
